// 封装wx.cloud.callFunction

/**
 * 返回数据结构
  {
    status: 0,
    msg: '',
    data: {}
  }
 */
export default (name: string, data?: any) => {
  wx.showLoading({ title: "", mask: true });

  return new Promise((resolve, reject) => {
    // 调用云函数
    wx.cloud
      .callFunction({ name, data })
      .then((res: any) => {
        wx.hideLoading();

        const ret = res.result;

        console.log(`[云函数] [${name}] 调用成功: `, res.result);

        // 业务异常处理
        if (typeof ret.status !== "undefined" && ret.status !== 0) {
          reject(ret.msg);
        }
        if (ret.data) {
          resolve(ret.data);
        }

        resolve(ret);
      })
      .catch((err) => {
        wx.hideLoading();

        console.error(`[云函数] [${name}] 调用失败: `, err);

        reject(err);
      });
  });
};
